/**
 * Copyright &copy; 2013-2016 山东易科德软件有限公司   All rights reserved.
 */
package cn.net.ecode.modules.cms.dao;

import java.util.Map;

import cn.net.ecode.common.persistence.CrudDao;
import cn.net.ecode.common.persistence.annotation.MyBatisDao;
import cn.net.ecode.modules.cms.entity.VisitLog;

/**
 * 访问日志DAO接口
 * @author ThinkGem
 * @version 2015-12-28
 */
@MyBatisDao
public interface VisitLogDao extends CrudDao<VisitLog> {

	/**
	 * 统计面板
	 * 1、浏览量（PV）：即通常说的Page View(PV)，用户每打开一个网站页面就被记录1次。用户多次打开同一页面，浏览量值累计。
	 * select count(1) from cms_visit_log t;
	 * 2、访问次数：访客在您网站上的会话(Session)次数，一次会话过程中可能浏览多个页面。
	 * 如果访客连续30分钟没有新开和刷新页面，或者访客关闭了浏览器，则当访客下次访问您的网站时，访问次数加1。
	 * select count(1) from cms_visit_log t where t.is_new_visit = '1';
	 * 3、访客数（UV）：一天之内您网站的独立访客数(以Cookie为依据)，一天内同一访客多次访问您网站只计算1个访客。
	 * select count(count(1)) from cms_visit_log t group by t.visit_date, t.unique_visit_id;
	 * 4、新访客数：独立访客中，历史第一次访问您网站的访客数。
	 * select count(count(1)) from cms_visit_log t group by t.unique_visit_id;
	 * 5、IP数：一天之内您网站的独立访问ip数。
	 * select count(count(1)) from cms_visit_log t group by t.visit_date, t.remote_addr;
	 * 6、跳出率：只浏览了一个页面便离开了网站的访问次数占总的访问次数的百分比。
	 * select sum(case when count(1) = 1 then 1 else 0 end)/count(count(1))*100 
	 * 	from CMS_VISIT_LOG t group by t.unique_visit_id, t.first_visit_time;
	 * 7、平均访问时长：总访问页面的平均值
	 *  select avg(max(total_remain_time)) from cms_visit_log t
	 *   where t.total_remain_time > 0 group by t.unique_visit_id, t.first_visit_time;
	 */
	public Map<String, Object> totalCount(VisitLog visitLog);
	
}